import { ref, App } from 'vue'
import { queryBatch,Dicts } from '@api/dicts'

/**
 * 使用字典工具的组合函数
 * 此函数旨在初始化并提供访问字典数据的方法它将指定的应用程序与字典数据绑定，
 * 并提供一个异步方法来批量获取字典数据
 * @param app 应用程序实例，用于注入字典访问方法
 */
export default function useDicts(app: App) {
  // 初始化字典引用，开始时为空对象
  const dicts = ref<Partial<Dicts>>({})

  /**
   * 异步获取字典数据
   * 该方法接收一个字符串数组作为参数，这些字符串代表需要查询的字典键名
   * 它通过调用 `queryBatch` 方法批量查询这些字典，并将结果存储在 `dicts` 引用中
   * @param data 字典键名的字符串数组
   */
  async function getDicts(data: string[]) {
    // 执行批量查询，获取字典数据
    let res = await queryBatch(data)
    // 将查询结果存储在字典引用中
    dicts.value = res.data
  }

  app.mixin({
    data() {
      return {
        dicts
      }
    },
    methods: {
      getDicts,
    },
  })
}